<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>安全帽佩戴检测 - 数据标注指南</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
            line-height: 1.8;
            color: #333;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            padding: 20px;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            background: white;
            border-radius: 16px;
            box-shadow: 0 20px 60px rgba(0,0,0,0.3);
            overflow: hidden;
        }

        .header {
            background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
            color: white;
            padding: 40px;
            text-align: center;
        }

        .header h1 {
            font-size: 2.5em;
            margin-bottom: 10px;
            font-weight: 700;
        }

        .header .subtitle {
            font-size: 1.2em;
            opacity: 0.9;
            font-weight: 300;
        }

        .content {
            padding: 40px;
        }

        .section {
            margin-bottom: 40px;
        }

        .section-title {
            font-size: 1.8em;
            color: #1e3c72;
            margin-bottom: 20px;
            padding-bottom: 10px;
            border-bottom: 3px solid #667eea;
            display: flex;
            align-items: center;
        }

        .section-title .icon {
            margin-right: 15px;
            font-size: 1.2em;
        }

        .subsection {
            margin-top: 25px;
        }

        .subsection-title {
            font-size: 1.4em;
            color: #2a5298;
            margin-bottom: 15px;
            font-weight: 600;
        }

        .info-box {
            background: #f8f9ff;
            border-left: 4px solid #667eea;
            padding: 20px;
            margin: 20px 0;
            border-radius: 4px;
        }

        .warning-box {
            background: #fff8e6;
            border-left: 4px solid #ffa726;
            padding: 20px;
            margin: 20px 0;
            border-radius: 4px;
        }

        .success-box {
            background: #e8f5e9;
            border-left: 4px solid #66bb6a;
            padding: 20px;
            margin: 20px 0;
            border-radius: 4px;
        }

        .error-box {
            background: #ffebee;
            border-left: 4px solid #ef5350;
            padding: 20px;
            margin: 20px 0;
            border-radius: 4px;
        }

        .box-title {
            font-weight: 600;
            margin-bottom: 10px;
            font-size: 1.1em;
        }

        table {
            width: 100%;
            border-collapse: collapse;
            margin: 20px 0;
            box-shadow: 0 2px 8px rgba(0,0,0,0.1);
        }

        th {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 15px;
            text-align: left;
            font-weight: 600;
        }

        td {
            padding: 15px;
            border-bottom: 1px solid #e0e0e0;
        }

        tr:hover {
            background: #f5f5f5;
        }

        ul, ol {
            margin-left: 25px;
            margin-top: 10px;
        }

        li {
            margin-bottom: 10px;
        }

        .checklist {
            list-style: none;
            margin-left: 0;
        }

        .checklist li:before {
            content: "✓ ";
            color: #66bb6a;
            font-weight: bold;
            margin-right: 10px;
        }

        .workflow {
            display: flex;
            flex-direction: column;
            gap: 15px;
            margin: 20px 0;
        }

        .workflow-step {
            background: white;
            border: 2px solid #667eea;
            border-radius: 8px;
            padding: 20px;
            position: relative;
            transition: transform 0.3s, box-shadow 0.3s;
        }

        .workflow-step:hover {
            transform: translateX(10px);
            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
        }

        .workflow-step .step-number {
            position: absolute;
            left: -15px;
            top: 50%;
            transform: translateY(-50%);
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            width: 40px;
            height: 40px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: bold;
            font-size: 1.2em;
        }

        .workflow-step .step-title {
            font-weight: 600;
            font-size: 1.2em;
            color: #1e3c72;
            margin-bottom: 5px;
            margin-left: 30px;
        }

        .workflow-step .step-desc {
            color: #666;
            margin-left: 30px;
        }

        .annotation-example {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 20px;
            margin: 20px 0;
        }

        .example-card {
            border: 2px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
            transition: transform 0.3s;
        }

        .example-card:hover {
            transform: scale(1.05);
            box-shadow: 0 8px 16px rgba(0,0,0,0.2);
        }

        .example-card .example-image {
            background: #f0f0f0;
            height: 200px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 3em;
        }

        .example-card .example-label {
            padding: 15px;
            background: #f8f9ff;
            font-weight: 600;
            text-align: center;
        }

        .code-block {
            background: #2d2d2d;
            color: #f8f8f2;
            padding: 20px;
            border-radius: 8px;
            font-family: 'Courier New', monospace;
            overflow-x: auto;
            margin: 20px 0;
        }

        .highlight {
            background: linear-gradient(120deg, #fef08a 0%, #fef08a 100%);
            background-repeat: no-repeat;
            background-size: 100% 40%;
            background-position: 0 90%;
            padding: 2px 4px;
            font-weight: 600;
        }

        .tag {
            display: inline-block;
            background: #667eea;
            color: white;
            padding: 4px 12px;
            border-radius: 20px;
            font-size: 0.9em;
            margin-right: 8px;
            margin-bottom: 8px;
        }

        .footer {
            background: #f5f5f5;
            padding: 30px;
            text-align: center;
            color: #666;
            border-top: 1px solid #e0e0e0;
        }

        @media (max-width: 768px) {
            .annotation-example {
                grid-template-columns: 1fr;
            }

            .header h1 {
                font-size: 1.8em;
            }

            .content {
                padding: 20px;
            }
        }

        .stats-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 20px;
            margin: 20px 0;
        }

        .stat-card {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 25px;
            border-radius: 12px;
            text-align: center;
            box-shadow: 0 4px 12px rgba(0,0,0,0.1);
        }

        .stat-card .stat-value {
            font-size: 2.5em;
            font-weight: bold;
            margin-bottom: 5px;
        }

        .stat-card .stat-label {
            font-size: 1em;
            opacity: 0.9;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>🛡️ 安全帽佩戴检测项目</h1>
            <p class="subtitle">数据标注操作指南 v1.0</p>
        </div>

        <div class="content">
            <!-- 项目概述 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">📋</span>
                    项目概述
                </h2>
                <div class="info-box">
                    <p><strong>项目目标：</strong>构建一个基于YOLO的安全帽佩戴检测模型，用于生产车间的实时安全监控。</p>
                    <p style="margin-top: 10px;"><strong>应用场景：</strong>生产车间、固定监控点位、室内环境、稀疏人群</p>
                    <p style="margin-top: 10px;"><strong>性能要求：</strong>召回率 ≥90%、精度 ≥90%、推理延迟 ≤300ms</p>
                </div>

                <div class="stats-grid">
                    <div class="stat-card">
                        <div class="stat-value">2</div>
                        <div class="stat-label">标注类别</div>
                    </div>
                    <div class="stat-card">
                        <div class="stat-value">1000+</div>
                        <div class="stat-label">最小标注数量</div>
                    </div>
                    <div class="stat-card">
                        <div class="stat-value">≥90%</div>
                        <div class="stat-label">目标精度</div>
                    </div>
                    <div class="stat-card">
                        <div class="stat-value">≤300ms</div>
                        <div class="stat-label">推理延迟</div>
                    </div>
                </div>
            </div>

            <!-- 标注策略 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">🎯</span>
                    标注策略
                </h2>
                
                <div class="subsection">
                    <h3 class="subsection-title">核心方法：头部区域检测 + 分类</h3>
                    <p>我们采用<span class="highlight">业界主流的标注策略</span>：标注人员头部区域，并根据是否佩戴安全帽进行分类。</p>
                    
                    <div class="success-box">
                        <div class="box-title">✅ 为什么选择这种策略？</div>
                        <ul class="checklist">
                            <li>最适合YOLO架构，训练简单高效</li>
                            <li>单次推理即可完成检测和分类</li>
                            <li>泛化性好，对不同类型安全帽适应性强</li>
                            <li>技术成熟，成功案例众多</li>
                        </ul>
                    </div>
                </div>

                <div class="subsection">
                    <h3 class="subsection-title">标注类别定义</h3>
                    <table>
                        <thead>
                            <tr>
                                <th>类别ID</th>
                                <th>类别名称</th>
                                <th>英文标识</th>
                                <th>说明</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td><strong>0</strong></td>
                                <td>佩戴安全帽的人头</td>
                                <td><code>helmet</code></td>
                                <td>头部区域正确佩戴安全帽</td>
                            </tr>
                            <tr>
                                <td><strong>1</strong></td>
                                <td>未佩戴安全帽的人头</td>
                                <td><code>no_helmet</code></td>
                                <td>头部区域未佩戴安全帽</td>
                            </tr>
                        </tbody>
                    </table>

                    <div class="code-block">
# 类别配置文件（classes.txt）
helmet
no_helmet
                    </div>
                </div>
            </div>

            <!-- 标注规范 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">📐</span>
                    标注操作规范
                </h2>

                <div class="subsection">
                    <h3 class="subsection-title">1. 标注框的位置与大小</h3>
                    
                    <div class="info-box">
                        <div class="box-title">📏 标注框范围定义</div>
                        <ul>
                            <li><strong>上边界：</strong>安全帽顶部（或头发/头顶最高点）</li>
                            <li><strong>下边界：</strong>下巴底部或肩膀上缘</li>
                            <li><strong>左右边界：</strong>头部（含帽子）的最宽处，留少许边距</li>
                            <li><strong>原则：</strong>紧密包围头部区域，不要过度裁剪，也不要留太多空白</li>
                        </ul>
                    </div>

                    <div class="annotation-example">
                        <div class="example-card">
                            <div class="example-image">
                                👷
                            </div>
                            <div class="example-label" style="background: #e8f5e9; color: #2e7d32;">
                                ✓ 正确示例：佩戴安全帽<br>
                                <span style="font-size: 0.9em; font-weight: normal;">标注框包含头部+安全帽</span>
                            </div>
                        </div>
                        <div class="example-card">
                            <div class="example-image">
                                🧑
                            </div>
                            <div class="example-label" style="background: #ffebee; color: #c62828;">
                                ✓ 正确示例：未佩戴安全帽<br>
                                <span style="font-size: 0.9em; font-weight: normal;">标注框包含整个头部</span>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="subsection">
                    <h3 class="subsection-title">2. 标注细则与边界情况</h3>
                    
                    <table>
                        <thead>
                            <tr>
                                <th>场景</th>
                                <th>处理规则</th>
                                <th>说明</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>👤 人员部分出画面</td>
                                <td>头部可见≥50%时标注</td>
                                <td>只标注可见的头部区域</td>
                            </tr>
                            <tr>
                                <td>🚧 头部被遮挡</td>
                                <td>遮挡≥70%时跳过</td>
                                <td>避免标注不确定的样本</td>
                            </tr>
                            <tr>
                                <td>🔄 多角度头部</td>
                                <td>全部标注</td>
                                <td>正面、侧面、背面、俯视等</td>
                            </tr>
                            <tr>
                                <td>📏 远距离小目标</td>
                                <td>像素>20×20即可标注</td>
                                <td>覆盖实际监控距离范围</td>
                            </tr>
                            <tr>
                                <td>⚠️ 不规范佩戴</td>
                                <td>仍标为<code>helmet</code></td>
                                <td>只要头上有帽子（即使歪斜）</td>
                            </tr>
                            <tr>
                                <td>❓ 无法判断</td>
                                <td>跳过不标注</td>
                                <td>避免引入噪声标签</td>
                            </tr>
                        </tbody>
                    </table>

                    <div class="warning-box">
                        <div class="box-title">⚠️ 特别注意</div>
                        <ul>
                            <li><strong>不规范佩戴：</strong>安全帽戴歪、戴反、未系带等情况，只要帽子在头上，都标注为<code>helmet</code></li>
                            <li><strong>多人场景：</strong>每个可见的人头都需要单独标注，即使人员重叠</li>
                            <li><strong>模糊图像：</strong>如果图像质量太差无法判断，建议跳过该图片</li>
                            <li><strong>非安全帽：</strong>普通帽子、头巾、头发等都应标注为<code>no_helmet</code></li>
                        </ul>
                    </div>
                </div>

                <div class="subsection">
                    <h3 class="subsection-title">3. 场景覆盖要求</h3>
                    
                    <p>为确保模型泛化性，标注数据必须覆盖以下多样性维度：</p>
                    
                    <div class="info-box">
                        <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px;">
                            <div>
                                <div class="box-title">🎭 人员多样性</div>
                                <span class="tag">不同性别</span>
                                <span class="tag">不同年龄</span>
                                <span class="tag">不同发型</span>
                                <span class="tag">不同肤色</span>
                            </div>
                            <div>
                                <div class="box-title">🎨 安全帽多样性</div>
                                <span class="tag">黄色</span>
                                <span class="tag">白色</span>
                                <span class="tag">红色</span>
                                <span class="tag">蓝色</span>
                            </div>
                            <div>
                                <div class="box-title">📸 角度多样性</div>
                                <span class="tag">正面</span>
                                <span class="tag">侧面</span>
                                <span class="tag">背面</span>
                                <span class="tag">俯视</span>
                            </div>
                            <div>
                                <div class="box-title">💡 光照多样性</div>
                                <span class="tag">自然光</span>
                                <span class="tag">强光</span>
                                <span class="tag">弱光</span>
                                <span class="tag">背光</span>
                            </div>
                            <div>
                                <div class="box-title">📐 距离多样性</div>
                                <span class="tag">近景</span>
                                <span class="tag">中景</span>
                                <span class="tag">远景</span>
                            </div>
                            <div>
                                <div class="box-title">⏰ 时间多样性</div>
                                <span class="tag">早上</span>
                                <span class="tag">中午</span>
                                <span class="tag">下午</span>
                                <span class="tag">傍晚</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- 数据量规划 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">📊</span>
                    数据量规划
                </h2>

                <div class="subsection">
                    <h3 class="subsection-title">分阶段数据需求</h3>
                    
                    <table>
                        <thead>
                            <tr>
                                <th>阶段</th>
                                <th>helmet数量</th>
                                <th>no_helmet数量</th>
                                <th>总计</th>
                                <th>用途</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr style="background: #fff8e6;">
                                <td><strong>PoC验证阶段</strong></td>
                                <td>500-800张</td>
                                <td>500-800张</td>
                                <td><strong>1000-1600张</strong></td>
                                <td>快速验证技术可行性</td>
                            </tr>
                            <tr style="background: #e8f5e9;">
                                <td><strong>MVP开发阶段</strong></td>
                                <td>1000-1500张</td>
                                <td>1000-1500张</td>
                                <td><strong>2000-3000张</strong></td>
                                <td>开发基础可用模型</td>
                            </tr>
                            <tr style="background: #e3f2fd;">
                                <td><strong>生产部署阶段</strong></td>
                                <td>2000-3000张</td>
                                <td>2000-3000张</td>
                                <td><strong>4000-6000张</strong></td>
                                <td>达到生产级精度要求</td>
                            </tr>
                        </tbody>
                    </table>

                    <div class="warning-box">
                        <div class="box-title">⚖️ 类别平衡原则</div>
                        <p><strong>关键要求：</strong>两个类别的样本数量比例应保持在 <span class="highlight">1:1 到 1:2</span> 之间。</p>
                        <p style="margin-top: 10px;"><strong>原因：</strong>如果类别严重不平衡（如helmet有3000张，no_helmet只有500张），模型会偏向多数类，导致少数类的召回率下降。</p>
                    </div>
                </div>

                <div class="subsection">
                    <h3 class="subsection-title">数据集划分</h3>
                    
                    <div class="info-box">
                        <div class="box-title">📂 标准划分比例</div>
                        <ul>
                            <li><strong>训练集 (Training Set)：</strong>70% - 用于模型学习</li>
                            <li><strong>验证集 (Validation Set)：</strong>20% - 用于调参和模型选择</li>
                            <li><strong>测试集 (Test Set)：</strong>10% - 用于最终评估，全程不参与训练</li>
                        </ul>
                        <p style="margin-top: 15px;"><strong>示例：</strong>如果有2000张标注图片，应划分为：训练集1400张、验证集400张、测试集200张</p>
                    </div>
                </div>
            </div>

            <!-- 标注工具 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">🛠️</span>
                    推荐标注工具
                </h2>

                <table>
                    <thead>
                        <tr>
                            <th>工具名称</th>
                            <th>类型</th>
                            <th>适用场景</th>
                            <th>优势</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td><strong>LabelImg</strong></td>
                            <td>开源/免费</td>
                            <td>小规模项目（<2000张）</td>
                            <td>简单易用，原生支持YOLO格式</td>
                        </tr>
                        <tr>
                            <td><strong>CVAT</strong></td>
                            <td>开源/免费</td>
                            <td>中大规模项目，团队协作</td>
                            <td>支持在线协作，辅助标注功能强</td>
                        </tr>
                        <tr>
                            <td><strong>Labelme</strong></td>
                            <td>开源/免费</td>
                            <td>需要自定义的项目</td>
                            <td>灵活度高，可自定义配置</td>
                        </tr>
                        <tr>
                            <td><strong>Roboflow</strong></td>
                            <td>商业服务</td>
                            <td>需要全流程管理的项目</td>
                            <td>数据管理+标注+增强+导出一体化</td>
                        </tr>
                    </tbody>
                </table>

                <div class="success-box">
                    <div class="box-title">🌟 推荐组合</div>
                    <p><strong>小团队/初学者：</strong>使用 <strong>LabelImg</strong>，5分钟上手，直接导出YOLO格式</p>
                    <p style="margin-top: 10px;"><strong>专业团队：</strong>使用 <strong>CVAT</strong>，支持多人协作、任务分配、质量审核</p>
                </div>
            </div>

            <!-- 标注流程 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">🔄</span>
                    标注工作流程
                </h2>

                <div class="workflow">
                    <div class="workflow-step">
                        <div class="step-number">1</div>
                        <div class="step-title">数据采集</div>
                        <div class="step-desc">从现场监控系统导出视频或直接抓拍图片，确保覆盖不同时间段和工作场景</div>
                    </div>

                    <div class="workflow-step">
                        <div class="step-number">2</div>
                        <div class="step-title">视频抽帧</div>
                        <div class="step-desc">如果是视频素材，建议每5-10帧抽取1帧，避免冗余相似样本</div>
                    </div>

                    <div class="workflow-step">
                        <div class="step-number">3</div>
                        <div class="step-title">图片筛选</div>
                        <div class="step-desc">删除空镜头、模糊图片、无人员的图片，只保留有效样本</div>
                    </div>

                    <div class="workflow-step">
                        <div class="step-number">4</div>
                        <div class="step-title">标注执行</div>
                        <div class="step-desc">使用标注工具进行矩形框标注，严格遵循本指南的标注规范</div>
                    </div>

                    <div class="workflow-step">
                        <div class="step-number">5</div>
                        <div class="step-title">质量审核</div>
                        <div class="step-desc">抽取10-20%的标注数据进行二次审核，确保标注质量</div>
                    </div>

                    <div class="workflow-step">
                        <div class="step-number">6</div>
                        <div class="step-title">格式转换</div>
                        <div class="step-desc">导出YOLO格式标注文件（txt格式），每张图片对应一个同名txt文件</div>
                    </div>

                    <div class="workflow-step">
                        <div class="step-number">7</div>
                        <div class="step-title">数据集划分</div>
                        <div class="step-desc">按照7:2:1比例划分为训练集、验证集、测试集</div>
                    </div>
                </div>
            </div>

            <!-- 质量控制 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">✅</span>
                    质量控制
                </h2>

                <div class="subsection">
                    <h3 class="subsection-title">标注质量检查清单</h3>
                    
                    <div class="info-box">
                        <ul class="checklist">
                            <li>标注框是否紧密包围头部区域？</li>
                            <li>标注框是否包含了完整的头部（未截断）？</li>
                            <li>类别选择是否正确（helmet vs no_helmet）？</li>
                            <li>是否遗漏了图片中的某些人头？</li>
                            <li>标注框是否过大，包含了过多背景？</li>
                            <li>同一场景下的标注标准是否一致？</li>
                        </ul>
                    </div>
                </div>

                <div class="subsection">
                    <h3 class="subsection-title">常见错误及纠正</h3>
                    
                    <table>
                        <thead>
                            <tr>
                                <th>错误类型</th>
                                <th>错误示例</th>
                                <th>正确做法</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>框选范围过大</td>
                                <td>标注框包含了肩膀、身体</td>
                                <td>框应止于肩膀上缘，只包含头部</td>
                            </tr>
                            <tr>
                                <td>框选范围过小</td>
                                <td>框把安全帽顶部切掉了</td>
                                <td>框应完整包含整个安全帽</td>
                            </tr>
                            <tr>
                                <td>类别标注错误</td>
                                <td>把歪戴的安全帽标为no_helmet</td>
                                <td>只要头上有帽子就是helmet</td>
                            </tr>
                            <tr>
                                <td>遗漏目标</td>
                                <td>远处或边缘的人头没有标注</td>
                                <td>标注所有可见的人头</td>
                            </tr>
                            <tr>
                                <td>重复标注</td>
                                <td>同一个人头被标注两次</td>
                                <td>每个目标只标注一次</td>
                            </tr>
                        </tbody>
                    </table>
                </div>

                <div class="subsection">
                    <h3 class="subsection-title">一致性保障措施</h3>
                    
                    <div class="success-box">
                        <ul>
                            <li><strong>📖 标注前培训：</strong>所有标注人员在开始工作前，必须学习本指南并通过标注测试</li>
                            <li><strong>📝 标注示例库：</strong>建立10-20张标准标注示例，供标注人员随时参考</li>
                            <li><strong>🔍 定期抽查：</strong>每标注200-300张后，进行一次质量抽查和反馈</li>
                            <li><strong>👥 交叉审核：</strong>重要数据集由至少两人标注，取交集作为最终结果</li>
                            <li><strong>📊 质量统计：</strong>记录每个标注员的错误率，针对性改进</li>
                        </ul>
                    </div>
                </div>
            </div>

            <!-- YOLO格式说明 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">📄</span>
                    YOLO标注格式说明
                </h2>

                <div class="subsection">
                    <h3 class="subsection-title">文件组织结构</h3>
                    
                    <div class="code-block">
dataset/
├── images/
│   ├── train/
│   │   ├── img_001.jpg
│   │   ├── img_002.jpg
│   │   └── ...
│   ├── val/
│   │   ├── img_101.jpg
│   │   └── ...
│   └── test/
│       └── ...
├── labels/
│   ├── train/
│   │   ├── img_001.txt
│   │   ├── img_002.txt
│   │   └── ...
│   ├── val/
│   │   └── ...
│   └── test/
│       └── ...
└── classes.txt
                    </div>
                </div>

                <div class="subsection">
                    <h3 class="subsection-title">标注文件格式</h3>
                    
                    <div class="info-box">
                        <p><strong>每个txt文件的每一行代表一个标注框，格式为：</strong></p>
                        <div class="code-block" style="margin-top: 10px;">
&lt;class_id&gt; &lt;x_center&gt; &lt;y_center&gt; &lt;width&gt; &lt;height&gt;
                        </div>
                        <ul style="margin-top: 15px;">
                            <li><code>class_id</code>: 类别ID（0=helmet, 1=no_helmet）</li>
                            <li><code>x_center</code>: 标注框中心点X坐标（归一化到0-1）</li>
                            <li><code>y_center</code>: 标注框中心点Y坐标（归一化到0-1）</li>
                            <li><code>width</code>: 标注框宽度（归一化到0-1）</li>
                            <li><code>height</code>: 标注框高度（归一化到0-1）</li>
                        </ul>
                    </div>

                    <div class="subsection">
                        <h3 class="subsection-title">标注示例</h3>
                        
                        <div class="code-block">
# img_001.txt (图片中有2个人，一个戴帽，一个未戴帽)
0 0.342 0.156 0.089 0.142
1 0.678 0.234 0.095 0.158

# 解释：
# 第一行：helmet类别，框中心在(0.342, 0.156)，框大小为0.089×0.142
# 第二行：no_helmet类别，框中心在(0.678, 0.234)，框大小为0.095×0.158
                        </div>
                    </div>
                </div>
            </div>

            <!-- 时间与成本估算 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">⏱️</span>
                    时间与成本估算
                </h2>

                <table>
                    <thead>
                        <tr>
                            <th>项目阶段</th>
                            <th>标注数量</th>
                            <th>单张标注时间</th>
                            <th>总工时</th>
                            <th>外包成本估算</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>PoC验证</td>
                            <td>1000-1600张</td>
                            <td>10-30秒</td>
                            <td>3-13小时</td>
                            <td>¥100-800</td>
                        </tr>
                        <tr>
                            <td>MVP开发</td>
                            <td>2000-3000张</td>
                            <td>10-30秒</td>
                            <td>6-25小时</td>
                            <td>¥200-1500</td>
                        </tr>
                        <tr>
                            <td>生产部署</td>
                            <td>4000-6000张</td>
                            <td>10-30秒</td>
                            <td>11-50小时</td>
                            <td>¥400-3000</td>
                        </tr>
                    </tbody>
                </table>

                <div class="info-box">
                    <div class="box-title">💡 效率提升建议</div>
                    <ul>
                        <li><strong>使用预训练模型辅助标注：</strong>用已有的安全帽检测模型生成初步标注，人工只需审核和修正，可提升3-5倍效率</li>
                        <li><strong>批量操作：</strong>使用支持批量标注的工具，对相似场景批量处理</li>
                        <li><strong>分工协作：</strong>2-3人分工标注，最后交叉审核</li>
                    </ul>
                </div>
            </div>

            <!-- 附录 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">📚</span>
                    附录与资源
                </h2>

                <div class="subsection">
                    <h3 class="subsection-title">推荐学习资源</h3>
                    <ul>
                        <li><strong>YOLO官方文档：</strong>https://docs.ultralytics.com/</li>
                        <li><strong>LabelImg工具：</strong>https://github.com/heartexlabs/labelImg</li>
                        <li><strong>CVAT标注平台：</strong>https://cvat.ai/</li>
                        <li><strong>Roboflow教程：</strong>https://roboflow.com/</li>
                    </ul>
                </div>

                <div class="subsection">
                    <h3 class="subsection-title">常见问题FAQ</h3>
                    
                    <div class="warning-box">
                        <p><strong>Q: 如果一个人戴了非标准的帽子（如棒球帽），应该标注为哪个类别？</strong></p>
                        <p>A: 标注为<code>no_helmet</code>，因为这不是安全帽。</p>
                    </div>

                    <div class="warning-box">
                        <p><strong>Q: 如果图片中有多个重叠的人头，如何标注？</strong></p>
                        <p>A: 每个可见的人头都要单独标注，即使有重叠。标注框可以部分重叠。</p>
                    </div>

                    <div class="warning-box">
                        <p><strong>Q: 标注过程中发现图片质量太差，怎么办？</strong></p>
                        <p>A: 如果连人眼都难以判断是否戴帽，建议直接删除该图片，不要标注。</p>
                    </div>

                    <div class="warning-box">
                        <p><strong>Q: 标注完成后，如何验证标注质量？</strong></p>
                        <p>A: 可以使用脚本可视化标注结果，或者在YOLO训练前用验证工具检查标注格式和分布。</p>
                    </div>
                </div>
            </div>

            <!-- 下一步行动 -->
            <div class="section">
                <h2 class="section-title">
                    <span class="icon">🚀</span>
                    下一步行动计划
                </h2>

                <div class="success-box">
                    <ol>
                        <li><strong>准备标注环境：</strong>安装标注工具（推荐LabelImg或CVAT）</li>
                        <li><strong>采集原始数据：</strong>从监控系统导出视频或图片素材</li>
                        <li><strong>数据预处理：</strong>视频抽帧、图片筛选、按场景分类</li>
                        <li><strong>标注试验：</strong>先标注50-100张，验证标注规范可行性</li>
                        <li><strong>批量标注：</strong>按照本指南规范，完成目标数量的标注</li>
                        <li><strong>质量审核：</strong>二次检查，确保标注质量</li>
                        <li><strong>数据集划分：</strong>按7:2:1划分训练/验证/测试集</li>
                        <li><strong>开始训练：</strong>使用YOLO进行模型训练和评估</li>
                    </ol>
                </div>

                <div class="info-box" style="text-align: center; margin-top: 30px;">
                    <p style="font-size: 1.2em; font-weight: 600; color: #1e3c72;">
                        🎯 目标：构建高质量数据集，为模型成功奠定基础！
                    </p>
                    <p style="margin-top: 10px; font-style: italic;">
                        "数据质量决定模型上限，标注规范决定数据质量。"
                    </p>
                </div>
            </div>

        </div>

        <div class="footer">
            <p><strong>AlgoArchitect - AI视觉解决方案架构师</strong></p>
            <p style="margin-top: 10px;">数据标注指南 v1.0 | 生成日期：2025-09-30</p>
            <p style="margin-top: 5px; font-size: 0.9em;">如有疑问，请及时沟通确认标注规范</p>
        </div>
    </div>
</body>
</html>
